﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Huirui.Cavan.Domain.Seedwork;
using Huirui.Cavan.Domain.MainBoundedContext.SearchModule;
using Huirui.Cavan.Domain.MainBoundedContext.ReportModule;

namespace Huirui.Cavan.Domain.MainBoundedContext.StockModule
{
    public interface IStockRepository : IRepository<Stock, StockSearch>
    {
        IList<StockByPurchaseOrderReport> GetStocksByPurchaseOrderReport(DateTime? startDate, DateTime? endDate, string purchaseOrderCode, string supplierCode, string stockInStatues);

        IList<StockByPurchaseReport> GetStocksByPurchaseReport(DateTime? startDate, DateTime? endDate, string purchaseCode, string stockCode);

        IList<StockBySalesOrderReport> GetStocksBySalesOrderReport(DateTime? startDate, DateTime? endDate, string salesOrderCode, string customerCode, string stockOutStatues);

        IList<StockBySalesReport> GetStocksBySalesReport(DateTime? startDate, DateTime? endDate, string salesCode, string stockCode);

        IList<StockByWareHouseReport> GetStocksByWareHouseReport(string wareHouseCode, string stockCode);

        IList<Stock> GetStocksByCustomer(StockSearch search, out long total);

        IList<Stock> GetStocksBySupplier(StockSearch search, out long total);
    }
}
